home *** CD-ROM | disk | FTP | other *** search
/ Complete Linux / Complete Linux.iso / docs / apps / database / ingres04.lzh / source / iutil / rllocks.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-06-12  |  1.2 KB  |  73 lines

  1. # include    <ingres.h>
  2. # include    <lock.h>
  3. # include    <sccs.h>
  4. # include    <signal.h>
  5.  
  6. SCCSID(@(#)rllocks.c    8.2    6/12/88)
  7.  
  8. struct lockreq    Lock;
  9. /*
  10. /*
  11.  *    setrll- set a relation lock
  12.  */
  13. setrll(act, rtid, mod)
  14. char    act;
  15. long    rtid;
  16. char    mod;
  17. {
  18.     register char    *r;
  19.     register int    i;
  20.     auto    int    ret_val;
  21.  
  22. #    ifdef xATR1
  23.     if ( tTf(28,4) )
  24.     {
  25.         printf(" setrll act=%d md=%o ", act, mod);
  26.         dumptid(&rtid);
  27.     }
  28. #    endif
  29.     if (Alockdes < 0)
  30.         return(1);
  31.     Lock.lract = act;    /* sleep (act = 2) or error return (act = 1)*/
  32.     Lock.lrtype = T_REL;    /* relation lock */
  33.     Lock.lrmod = mod;    /* exclusive (mod = 1) or shared (mod = 2)*/
  34.     bmove(&rtid, Lock.lrel, 4);    /* copy relation id */
  35.     r = Lock.lpage;
  36.  
  37.     /* zero out page id */
  38.     for (i = 0; i < 4; i++)
  39.         *r++ = 0;
  40.  
  41.     ret_val = dolock(&Lock);
  42.     return (ret_val);
  43. }
  44. /*
  45.  *    unlrel- unlock a relation lock
  46.  */
  47. unlrl(rtid)
  48. long    rtid;
  49. {
  50.     register char    *r;
  51.     register int    i;
  52.     auto    int    ret_val;
  53.  
  54. #    ifdef xATR1
  55.     if (tTf(28, 5))
  56.     {
  57.         printf(" unlrl ");
  58.         dumptid(&rtid);
  59.     }
  60. #    endif
  61.     if (Alockdes < 0)
  62.         return (1);
  63.     Lock.lract = A_RLS1;
  64.     Lock.lrtype = T_REL;    /* relation lock */
  65.     bmove(&rtid, Lock.lrel, 4);    /* copy relation id */
  66.     r = Lock.lpage;
  67.     for (i = 0; i < 4; i++)
  68.             /* zero out pageid */
  69.         *r++ = 0;
  70.     ret_val = dolock(&Lock);
  71.     return (ret_val);
  72. }
  73.